In a computer program which has a visual end-user interface, it is common practice to have various facilities for allowing the program's end-user to enlarge or shrink a portion of the data being displayed so that it appears larger or smaller. This action is frequently termed "zooming in" and "zooming out".
A common example of this is a drawing being displayed and edited in a computer-aided drawing program. The user may instruct the computer program to zoom in so that a portion of the drawing is enlarged and displayed in finer detail. This is useful when precise editing of the drawing is required.
In the prior art, there are two principal methods for enlarging or shrinking the data displayed by the computer program: (1) by selecting a "zoom in" or "zoom out" command, and (2) by highlighting a region of the displayed data on the computer screen and then instructing the computer to enlarge the selected portion to fill the entire screen. Each of these methods is described below.
In the first of these methods, a user generally selects a zoom in or zoom out command either by pressing a keystroke or keystroke combination which is received and interpreted by the computer program as a command to zoom. Alternatively, the user may use a pointing device, such as a mouse, track ball, digitizing tablet, touch screen or light pen to select a command from a menu, as is commonly done in computer application programs written for the Microsoft Windows operating system on the IBM PC or on Apple Macintosh systems. The amount zoomed may be preset by the program, such as "25%, 50%, 100%, and 200%". Or the user may, after selecting the zoom in or zoom out command, be prompted to specify the amount of zooming desired.
One major problem with this method of stretching displayed data is that control may be very imprecise, as in the case where stretching is accommodated in 25% gradations. Even if the user is allowed to specify the exact percentage of stretching, the user must iteratively specify the stretching/zooming amount and then observe the displayed result to see if it is what he desires. Obtaining the desired result may require several iterations.
A second problem with specifying a stretching amount is related to the aspect ratio of the displayed data. The end-user may want to stretch more in one dimension than the other. For example, the end-user may want to horizontally stretch the displayed data but not stretch the displayed data in the vertical dimension at all. Systems where a stretching/zooming percentage is selected almost always maintain the current aspect ratio of the displayed data.
In the second of the above methods for enlarging or shrinking displayed data, a pointing device is used to select or highlight a region of the computer display to enlarge. Donahue, U.S. Pat. No. 5,014,222, teaches one such method for selecting diagonally opposite comers of the area to be enlarged. After selecting the area to enlarge, the user issues a zoom command, either by a keystroke combination or by using a pointing device. The selected area is then enlarged or shrunk to fill the application program's allocated display area.
Both of the aforementioned methods stretch displayed data in both the vertical and horizontal dimensions at the same time. A problem arises with this operation in certain applications, however, because it may desirable to stretch the displayed data in only one direction, that is to say without seeking to maintain the display aspect ratio. An example of such an application is a project scheduling computer program that displays a time scale at the top of the screen. Individual project tasks are displayed in various positions below the time scale. Their position relative to the markings on the time scale indicate the beginning and ending times of each individual task.
In a project scheduling computer program, it may be desirable to stretch the time scale and the associated tasks aligned with the time scale such that horizontal space allocated to each unit of time on the time scale is larger or smaller. Increasing the width of each time scale unit widens the space for each the tasks displayed underneath the time scale, allowing for more descriptive text to be displayed within the boundaries of each task displayed on the computer screen. Conversely, the end-user may wish to reduce the width of each time scale unit in order that more time units are visible on the display screen, displaying more project tasks.
A second example is a data charting application that displays data relative to an X-Y coordinate axis system. In such an application program, the user may want to stretch or collapse the amount of space allocated to each unit on a particular axis in order to highlight a particular trend in the displayed data. For example, the slope of a plotted line may be accentuated by reducing the amount of space allocated to each X-axis unit, thereby making the line to appear to rise or fall faster.
The present invention overcomes these drawbacks of the prior art by providing a method wherein the scale itself is stretched by using a pointing device and the displayed data is stretched accordingly.